Projekt Pronal Projekt Pronal

Kazalo:
Sofinasiranje projekta
Starejši - učbenik...
Starejši - zbirka nalog...
Tekmovanja...
Tekmovanja - dopolni...
Tekmovanja - Parsons...
Tekmovanja - popravi
rtk 1988
rtk 1996
rtk 1998
rtk 1999
rtk 2000
rtk 2001
rtk 2002
rtk 2004
rtk 2006
rtk 2007
rtk 2008
rtk 2009
rtk 2013
rtk 2014
rtk 2016
rtk 2017
rtk 2018
rtk 1999

rtk 1999


1999.1.2 (popravi)

1. podnaloga

Iz vesolja pričakuješ signal nezemeljske civilizacije. Utemeljeno lahko pričakuješ, da bo sporočilo poslano v jeziku, ki uporablja angleško abecedo 26 malih črk in zadošča naslednjim pravilom:

  • Sporočilo je sestavljeno zgolj iz zaporedja znakov a, b, c, d, . . . , z, ki sestavljajo besede, in iz presledkov med njimi (brez ločil).
  • Zaporedni znaki se vselej razlikujejo (ni podvojenih znakov).
  • Samoglasniki a, e, i, o, u se ne smejo stikati.
  • Znak x je lahko le na koncu besede.

Naloga

V funkciji pravo(niz), ki ugotovi, ali sporočilo ustreza tem pogojem, se skriva nekaj napak. Popravi jo tako, da bo pravilno delovala.

def pravo(niz):
    '''Vrne True, če besedilo v niz ustreza vseh pogojem in False sicer.'''

    dovoljeni_znaki = 'abcdefghijklmnopqrstuvwxyz'
    samoglasniki = ['a','e','i','o','u']
    prejsnji_znak = '.'
    for znak in niz:
        if znak not in dovoljeni_znaki:
            return False
        if znak == prejsnji_znak:
            return False
        if znak in samoglasniki or prejsnji_znak in samoglasniki:
            return False
        if prejsnji_znak == 'x' and znak != ' ':
            return True
        prejsnji_znak = znak
    return True

Vhodni podatki

Sporočilo v obliki niza.

Izhodni podatki

True, če niz ustreza vsem pravilom in False sicer.

Primer

>>> pravo('we live in same universe')
`True`

>>> pravo('can you hear us')
`False`

Uradna rešitev

def pravo(niz):
    '''Vrne True, če besedilo v niz ustreza vseh pogojem in False sicer.'''

    dovoljeni_znaki = 'abcdefghijklmnopqrstuvwxyz '
    samoglasniki = ['a','e','i','o','u']
    prejsnji_znak = ''
    for znak in niz:
        if znak not in dovoljeni_znaki:
            return False    # nedovoljen znak
        if znak == prejsnji_znak:
            return False    # podvojen znak
        if znak in samoglasniki and prejsnji_znak in samoglasniki:
            return False    # zaporedna samoglasnika
        if prejsnji_znak == 'x' and znak != ' ':
            return False    # x ni na koncu besede
        prejsnji_znak = znak
    return True

1999.1.3 (popravi)

1. podnaloga

V besedilu iščemo besede, ki vsebujejo vsaj eno zvezdico ($*$). Izpišemo vsako besedo z zvezdico, poleg nje pa tudi njej sledečo besedo, ne glede na to, ali tudi sama vsebuje zvezdico ali ne.

Naloga

Popravi funkcijo besede(niz), ki izvede opisano opravilo, saj se v njej skriva nekaj napak. Besede so ločene s presledki.

def besede(niz):
    '''Izpiše besede v katerih je vsaj ena zvezdica (*) in njihove naslednike'''

    vse_besede = niz.split('  ')
    vsebuje_zvezdico = True
    novo_besedilo = []
    for beseda in vse_besede:
        if vsebuje_zvezdico = True and '*' in beseda:
            novo_besedilo.append(beseda)
        if '*' in beseda:
            vsebuje_zvezdico = True
            novo_besedilo.append(beseda)
        else:
            vsebuje_zvezdico = False
    return ''.join(novo_besedilo)

Vhodni podatki

Besedilo v obliki niza.

Izhodni podatki

Niz ustreznih besed, ločenih s presledki.

Primer

>>> besede('Dan*es je lepo vre*m*e.')
'Dan*es je vre*m*e.'

>>> besede('Ka*j s*i jedel da*nes?')
'Kaj si jedel danes?'

Uradna rešitev

def besede(niz):
    '''Izpiše besede v katerih je vsaj ena zvezdica (*) in njihove naslednike'''

    vse_besede = niz.split(' ')
    vsebuje_zvezdico = False
    novo_besedilo = []
    for beseda in vse_besede:
        if vsebuje_zvezdico == True and '*' not in beseda:
            novo_besedilo.append(beseda)
        if '*' in beseda:
            vsebuje_zvezdico = True
            novo_besedilo.append(beseda)
        else:
            vsebuje_zvezdico = False
    return ' '.join(novo_besedilo)
Mesto objave ob koncu projekta 15.9.2018